<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="I6NB1" id="I6NB1"><span data-lake-id="ueeac42fd" id="ueeac42fd">典型回答</span></h1>
  <p data-lake-id="ud90b5efa" id="ud90b5efa"><br></p>
  <p data-lake-id="uc4324c72" id="uc4324c72"><span data-lake-id="ua07147ba" id="ua07147ba">微服务的拆分是一个复杂的过程，要考虑的因素有很多，其中必须要考虑的有业务领域、团队组织结构、技术架构、部署架构等多个方面。</span></p>
  <p data-lake-id="u52124fe1" id="u52124fe1"><span data-lake-id="u0ab3b2f3" id="u0ab3b2f3">​</span><br></p>
  <p data-lake-id="uaffe7808" id="uaffe7808"><span data-lake-id="u21f42848" id="u21f42848">首先最容易想到的就是按照业务功能进行拆分了。将具有不同功能的模块单独拆分出来作为一个微服务。比如用户服务、订单服务、物流服务等，每一个服务作为微服务部署，单独对外提供自己的能力。</span></p>
  <p data-lake-id="uf77804da" id="uf77804da"><span data-lake-id="u3b8a2c3f" id="u3b8a2c3f">​</span><br></p>
  <p data-lake-id="uffd7dc1f" id="uffd7dc1f"><span data-lake-id="ua05f8655" id="ua05f8655">第二点，不可忽视的就是微服务和组织架构之间的关系，按照康威定律来说，应用架构和组织架构应该是一一对应的。所以有的时候微服务的拆分也需要按照组织架构进行拆分，这样更加容易的进行微服务的开发与维护，能够做到最小成本沟通和最快速度的迭代。比如有些公司做了中台，那么就可能有单独的一些中台相关的微服务，如交易服务、店铺服务等。</span></p>
  <p data-lake-id="u2cd6ae3b" id="u2cd6ae3b"><span data-lake-id="u28851564" id="u28851564">​</span><br></p>
  <p data-lake-id="ub2b8eb30" id="ub2b8eb30"><span data-lake-id="u2dab6e83" id="u2dab6e83">第三，按照应用类型进行拆分。有一些应用主要处理在线业务，而有些系统专门处理离线业务，那么就可以把他们拆分开，让在线业务和离线业务分离，避免互相影响。</span></p>
  <p data-lake-id="u1806b3fe" id="u1806b3fe"><span data-lake-id="u78b08eb3" id="u78b08eb3">​</span><br></p>
  <p data-lake-id="u8c1ba34c" id="u8c1ba34c"><span data-lake-id="u52a356cb" id="u52a356cb">还有，按照技术架构拆分。比如不同的技术栈、使用不同的中间件体系，不同的开发语言等等。这些拆分开有利于独立维护。</span></p>
  <p data-lake-id="u705a4a2c" id="u705a4a2c"><span data-lake-id="ue5d3204d" id="ue5d3204d">​</span><br></p>
  <p data-lake-id="u9465fdda" id="u9465fdda"><span data-lake-id="u35d2da9a" id="u35d2da9a">除了以上说的这些，还有很多其他的方面，比如按照部署架构等。</span></p>
 </body>
</html>